package com.sojson.base.impl;

import java.math.BigDecimal;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 订单基础Bean
 * 
 * @author liu
 * @date 2020-11-02
 */
@ApiModel("订单基础Bean")
public abstract class BaseOrder extends BaseDto {

    /***/
    private static final long serialVersionUID = 1L;

    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("订单标题")
    public String baseTitle;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("订单类型")
    public Integer baseOrderType;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("支付类型")
    public Integer basePayType;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("订单编号")
    public String baseOrderNo;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("购物车订单编号")
    public String baseOrderNoShop;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("订单金额")
    public BigDecimal baseOrderTotal;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("支付金额")
    public BigDecimal basePayTotal;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("退款单号")
    public String baseRefundNo;
    @JsonIgnore
    @JSONField(serialize = false)
    @ApiModelProperty("退款金额")
    public BigDecimal baseRefundTotal;

    /** 获取 订单标题 */
    public String getBaseTitle() {
        return baseTitle;
    }

    /** 设置 订单标题 */
    public void setBaseTitle(String baseTitle) {
        this.baseTitle = baseTitle;
    }

    /** 获取 订单类型 */
    public abstract Integer getBaseOrderType();

    /** 设置 订单类型 */
    public void setBaseOrderType(Integer baseOrderType) {
        this.baseOrderType = baseOrderType;
    }

    /** 获取 支付类型 */
    public abstract Integer getBasePayType();

    /** 设置 支付类型 */
    public void setBasePayType(Integer basePayType) {
        this.basePayType = basePayType;
    }

    /** 获取 订单编号 */
    public abstract String getBaseOrderNo();

    /** 设置 订单编号 */
    public void setBaseOrderNo(String baseOrderNo) {
        this.baseOrderNo = baseOrderNo;
    }

    /** 获取 购物车订单编号 */
    public abstract String getBaseOrderNoShop();

    /** 设置 购物车订单编号 */
    public void setBaseOrderNoShop(String baseOrderNoShop) {
        this.baseOrderNoShop = baseOrderNoShop;
    }

    /** 获取 订单金额 */
    public abstract BigDecimal getBaseOrderTotal();

    /** 设置 订单金额 */
    public void setBaseOrderTotal(BigDecimal baseOrderTotal) {
        this.baseOrderTotal = baseOrderTotal;
    }

    /** 获取 支付金额 */
    public abstract BigDecimal getBasePayTotal();

    /** 设置 支付金额 */
    public void setBasePayTotal(BigDecimal basePayTotal) {
        this.basePayTotal = basePayTotal;
    }

    /** 获取 退款单号 */
    public abstract String getBaseRefundNo();

    /** 设置 退款单号 */
    public void setBaseRefundNo(String baseRefundNo) {
        this.baseRefundNo = baseRefundNo;
    }

    /** 获取 退款金额 */
    public abstract BigDecimal getBaseRefundTotal();

    /** 设置 退款金额 */
    public void setBaseRefundTotal(BigDecimal baseRefundTotal) {
        this.baseRefundTotal = baseRefundTotal;
    }

    /**
     * 退款初始化
     * 
     * @param orderNo       订单号
     * @param orderTotal    订单金额
     * @param refundNo      退款单号
     * @param refundTotal   退款金额
     * @param payType       支付类型
     */
    public abstract void refundInit(String orderNo, BigDecimal orderTotal, String refundNo, BigDecimal refundTotal,
        Integer payType);

}